﻿//22.小欧的括号嵌套
//小欧想要构造一个合法的括号序列满足以下条件：
//1.括号序列长度恰好为2×n。
//2.括号序列的嵌套层数最大值为r。
//括号嵌套层数是指在一个字符串中，以左括号 "(" 和右括号 ")" 形成的括号对的最大嵌套深度。
//例如，在字符串 "((())())" 中，括号嵌套层数最大值为 3。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n, r;
    cin >> n >> r;
    int z = min(n, r);
    string str;
    for (int i = 0; i < z; i++)
    {
        str += '(';
    }
    for (int i = 0; i < z; i++)
    {
        str += ')';
    }
    if (z == n)
    {
        cout << str << endl;
    }
    else
    {
        int x = n - z;
        for (int i = 0; i < x; i++)
        {
            str += "()";
        }
        cout << str << endl;
    }
    return 0;
}


//23.小欧的等差数列
//小欧有一个长度为 n，首项为 a，公差为 d 的等差数列。
//现在，小欧把这 n 个数看作一个集合，每次操作可以从集合中任意选两个数 a_i, a_j。
//如果 a_i + a_j 是偶数，那么可以将(a_i + a_j) / 2 加入到集合中。
//小欧想知道，经过若干次操作后，集合中最多能有多少个数。

#include <iostream>
using namespace std;
int main()
{
    long long n, a, d;
    cin >> n >> a >> d;
    long long ret = n;
    if (d % 2 != 1)
    {
        long long z = 0;
        //偶数
        while (d % 2 == 0)
        {
            z = z * 2 + 1;
            d /= 2;
        }
        ret += (n - 1) * z;
    }
    cout << ret << endl;
    return 0;
}